home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 1 (Walnut Creek)
/
Aminet - June 1993 [Walnut Creek].iso
/
aminet
/
mus
/
play
/
jukebox.lha
/
JukeBox
/
jukebox.doc
< prev
next >
Wrap
Text File
|
1993-01-29
|
47KB
|
1,225 lines
J U K E B O X
- freely distributable release -
PRODUCT DOCUMENTATION
by F.J. Reichert, January 1993
Introduction
------------
JukeBox is a program to play compact digital audio discs by emulating
a graphical user interface similar to common cd players. It provides a
command line oriented, fully programmable ARexx user interface as well. It
will work on CD-ROM players plugged to a scsi-hostadapter. JukeBox will
open its windows on the workbench (or any other public screen with
intuition V36+) and do its best to allow a font sensitive layout. The main
goal during development was to create a very comprehensive, self-
explanatory utility.
Copyright
---------
Copyright © 1992-93 by F.J. Reichert. All Rights Reserved. This program
and all accompanying files are copyrighted by their author
Franz-Josef Reichert
Kuchlingerstraße 13
6601 Kleinblittersdorf, GERMANY
eMail: fjrei@kbsaar.saar.de
Freely distributable release
----------------------------
Sorry, sorry, sorry! But I spent more than one year working on that
project, and I simply can't afford to throw away my time for free. There
had to be some main program features being disabled to encourage everybody
to get a registered owner of this product. For the freely distributable
release, the following features are restricted:
- only some ARexx Commands available
- no keyboard shortcuts
- no catalog expansion ability
- copyright requester upon startup
- shuttle wheel not functional
Note well: Even if you got this copy for free, THIS PROGRAM IS NOT IN
THE PUBLIC DOMAIN!
It may be USED for any purposes, commercial, personal, public, and
private, as long as ALL of this text, all files, copyright, mailing
address, and this notice are retained in their entirety. It is provided
without warranty of any kind, so use it at your own risk!
This program may be DISTRIBUTED by any means as long as there are
no charges specifically for the program. Charges for downloading from
electronic BBS systems, or charges for copying and media for freely
redistributable software libraries are certainly permissible. The entire
archive has to be left intact and unchanged. You must not distribute any
changed or imcomplete set of the original archive.
Shareware release
-----------------
If you used this program for a while and feel that it's time to
register, the full blown shareware release comes with the following
features:
- full ARexx command set
- keyboard shortcuts
- catalog expansion --- add YOUR own audio discs!
- full featured shuttle wheel
The suggested registration fee is US $35.00, DM 50,00 or any equivalent
amount in worldwide exchangeable foreign currency. Nevertheless, if you
feel that being too much, too few or you can't afford that for various
reasons, feel free to send me any amount you think this program is worth.
Any donation will be gratefully accepted. Bug reports, suggestions and
enhancement requests are highly appreciated as well.
But please, don't send me foreign checks! It costs me more to cash them
than the suggested amount, so there are actually pretty "worthless" for
me. Eurochecks or checks drawn on german banks will be fine, though.
Sorry, I'm not prepared to handle credit card payment. People living in
europe might want to send me money to a bank account, the number is 152
408 664, Postgiroamt Saarbrücken (BLZ 590 100 66). Otherwise, please send
me a 50-DM-bill (any bank should be able to exchange) or foreign bills (no
coins, please!) which I can exchange or use for my next holidays. Don't
forget to enclose your complete address with your registration request.
Thanks for your support!
The shareware release must not be redistributed by no means without the
prior written consent of the author.
Special note to CDROM software/hardware vendors
-----------------------------------------------
Yes, you may distribute the freely distributable release along with
your product as long as there is no additional fee for the program itself.
Surprised? Well, I'll like that, really! Possibly, you may even ask me to
do the appropriate adaption work to player hardware not supported yet,
providing the necessary information and materials, I will try to do do my
best for *free*.
On the other hand, you should consider carefully about the
possibility of distributing the full featured version instead, which could
greatly improve your sales. Please contact me for a license agreement.
--- Well, Here comes the program documentation:
The user interface
------------------
The time display
----------------
Gives information about track, index, minutes, seconds and frames
(1/75s) of the current audio disc. Playing status will show a triangle for
play and two sticks for pause, as known from audio player devices. The
name of the current disc will be displayed in the window's title bar
(casually stripped down to a maximum of 60 characters, followed by '...'),
the name of the current track (and/or optionally index) will show up below
the time display (see the catalog chapter to learn more about catalogs).
Graphic symbols '__V___' and 'o' stand for the meaning of the time display
to be track-relative oder disc-relative. 'A<>B' serves to display marked
passages (see below).
The track entry listview
------------------------
Gives information about all tracks on a disc currently inserted. Only
audio tracks will be selectable. Double clicking on a track entry will
cause the pickup to be moved to the beginning of that track. The "TITLES"
gadget switches between normal entry information (track number, playing
time or CTRL value for (unselectable) data tracks and absolute starting
time on the discs) or title names. Title names are only available if there
is a catalog entry for a given disc in the current catalog file.
Otherwise, a dummy name "<no title assigned>" will be displayed.
Gadgets
-------
Graphical symbols
-----------------
Eject, Play/Pause, Stop, TIMESET = fast forward and fast backward,
AMS/RMS = move to start of track and end of track, leftq and right channel
enable/disable (speaker symbols).
The shuttle wheel
-----------------
This custom gadget may be used for convenient positioning of the
pickup with Intuition V36+. It is a passive information gauge with
Intuition V34 and below. It depends on the current time display mode in
which way it acts. The needle may be positioned by dragging it with the
mouse. Complement mode will show the dial gadget to be the active one,
"release verify" operation, as known from standard boolean intuition
gadgets is supported as well. The needle appears in plain color for played
time (it will move clockwise then), a rastered image will be shown for
remaining time (it will then move in the opposite direction) while
playback is in progress.
1 to 16 (shortcut: numeric keys)
-------
Select a given track. For extended track selection (see below), "10"
will act just like "0".
++ (shortcut: <+>)
--
Extended track selection. Allows to specify any track number above
16. two minus signs (--) will appear in the track display, e.g. pressing
"2" and "4" consecutively will specify track number 24. If input
operations are abandonned for longer than ten seconds or set to an invalid
(nonexistant) track, no repositioning will be done at all.
A^B (shortcut: <^>)
---
May be used to mark a desired passage. Pressing this gadget first
marks the beginning (A) of the passage, the second press will mark the end
of the passage (B). JukeBox will then restart the whole passage from A to
B. To play the passage continguously, the "Repeat" mode needs to be
enabled (see below). Pressing "Play/Pause" will restart playing the marked
passage, "Continue" (see below) will clear both marks. To mark just the
beginning of a passage (only A), just press "A^B" once. This position will
be searched for every time "Play" is pressed. Certain players might
restrict marked areas to be located inside one single track, currently
supported players are not (see below), areas may range over several tracks
without restrictions.
Lock (shortcut: <L>)
----
Locks the disc tray. Pressing the eject button on the CDROM player
will take no effect. Depends on the drive being used.
Macros (shortcut: <X>)
------
Invokes the ARexx command shell (ARexx is required to take advantage
of this). Commands may be issued asynchronously to normal program
operation. Editing capabilities on the command line depends heavily on the
console handler currently used. See below how to specify a console handler
(CONSOLE tooltype).
Time (shortcut: <T>)
----
Switches between four different display modes specifying playing
time. First mode describes played time relative to the beginning of the
current track, second mode remaining time of the current track, third mode
played time relative to the whole disc and fourth mode remaining time of
the whole disc.
Repeat (shortcut: <R>)
------
Toggles between repeat mode and normal mode. In normal mode, playback
stops if a disc is completed. In repeat mode, playback of a completed disc
(or a completed passage, see "A^B") will restart at the first track or the
beginning of the passage, respectively.
Shuffle (shortcut: <S>)
-------
Toogles between shuffle mode and normal play mode. In shuffle mode,
JukeBox will play tracks on a disc randomly. Particular tracks may be
enabled or disabled (by clicking on them in the track's listview or
pressing appropriate track number gadgets/keys). Note: If you quit the
program while in shuffle mode, audio playback may continue even if it had
been currently in pause mode. This is due to the playback completion
address, which must be cleared to get the player to a known state before
exiting.
Edit (shortcut: <E>)
----
Allows the pickup to be positioned by specifing an absolute time
value (relative to the start of the current disc). Four minus signs '--:--
' will appear in the display until the input is completed. If input
operation is abandonned for longer than twenty seconds (or set to a non
existing value), no repositioning will be done.
Continue (shortcut: <C>)
--------
Suspends "SHUFFLE" mode or passage playback (see "A^B") and switches
back to normal playback.
Titles (shortcut: <I>)
------
Toggles the display mode for the track's listview. Either the format
"<track number> <time> <starting time>" or the title name as specified in
the catalog may be choosen.
Menus
-----
Project
-------
The current project is always a selected catalog file (see also
tooltypes, CATALOG) which allows the program to find and display the label
and title names for the current disc and the track currently playing.
Project, New (shortcut: <R-AMIGA>+<N>)
------------
Clears the current catalog file, leaves the catalog window empty.
Project, Open (shortcut: <R-AMIGA>+<O>)
-------------
Brings up a file requester to select a new catalog file. Uses
standard system ASL requester for AmigaOS 2.x and up, tries to open the
public domain ARP-filerequester for AmigaOS 1.3 and below. If neither asl-
or arp.library is available, brings up a simple string requester to
specify the desired file name after informing the user once that none of
those libraries is available.
Project, Save (shortcut: <R-AMIGA>+<S>)
-------------
Saves the current project. Not accessible for freely distributable
release.
Project, Save as (shortcut: <R-AMIGA>+<A>)
----------------
Brings up a file requester (see above) to specify the file name to
save the current project. Not accessible for freely distributable release.
Project, About (shortcut: <R-AMIGA>+<I>)
--------------
Gives program information. Provides a vendor-specific graphics image
for the cdrom player device currently used (as of this writing: NEC and
TOSHIBA).
Project, Shortcuts (shortcut: <R-AMIGA>+<K>)
------------------
Brings up a requester which shows the keyboard shortcuts available.
Note: For the freely distributable release, those are all unavailable
regardless whether they are shown or not.
Project, Quit (shortcut: <R-AMIGA>+<Q>)
-------------
Quits the program. Any opened window (catalog, ARexx console,
requesters) will be closed first, waiting ARexx commands will be suspended
to return immediately. If there were changes made to the current project,
this command will first bring up a file requester to give the user a
chance to save changes.
Catalog, Show (shortcut: <R-AMIGA>+<D>)
-------------
Brings up the catalog window. If already opened, will force the
catalog window to be the topmost window. Disc label entries are
highlighted and non-selectable, title entries will appear as plain text
and are selectable. Selecting a title entry inside the catalog window will
show the name of the disc this track belongs to in the window's title bar.
Double clicking on an entry will either reposition the pickup to that
track immediately (if the matching disc is inserted), or bring up an
asynchronously requester to prompt the user to insert this disc. If the
request is satisfied, it will disappear automatically and the selected
track will be played. There may be only one pending play operation per
disc JukeBox is waiting for, so "older" requests will disappear with
"newer" to come up. Requesters may be cancelled any time by pressing the
"Forget" gadget.
Catalog, Append (shortcut: <R-AMIGA>+<+>)
---------------
Appends the catalog "dummy" entry (provides "<no title assigned>" for
each entry) of a currently unknown disc to the current catalog. After
saving, label and title names may be edited by hand. This item is disabled
for the freely distributable release, you cannot expand the catalog.
Catalog, Sort (shortcut: <R-AMIGA>+<T>)
-------------
Sorts the catalog. Initially (mode 1), catalogs will be sorted by
discs (i.e.: in the same order as there are stored in the catalog file).
Issuing the sort command first will display each entry (labels and titles)
to be sorted alphabetically (mode 2). Issuing the sort command a second
time, the unselectable disc labels will be shown at the end of the file
(mode 3). Issuing the sort command another time will switch back to mode 2
and so on. Closing and reopening the window will switch back to mode 1.
Sorting supports foreign language methods, as provided by the
locale.library for AmigaOS 2.1 and up. Below that, standard ASCII sorting
will be performed.
SCSI
----
Selects the current host address. Multiple items selection supported.
Any change will take place after releasing the menu selection button, i.e.
you should browse through all three submenus to select a given host
address. JukeBox will then try to open the specified host device and issue
a inquiry command to figure out the matching player module, if any. If
anything fails, the user will be informed by requesters. There is a
"dummy" default player provided which just does nothing at all, and will
do no harm to any scsi target device.
SCSI, Board
-----------
Subitems allow to specify the ID number of the adapter board to be
used (the 100's digit).
SCSI, Logical Unit
------------------
Subitems allow to specify the logical unit number (the 10's digit).
SCSI, Target ID (shortcut: <R-AMIGA>+<0...7>)
---------------
Subitems allow to specify the target ID (the 1's digit).
Catalog file
------------
Note: Using the freely distributable release, you cannot expand the
catalog file with your own discs. Only the default demo catalog file,
which comes along with the distribution archive, might give you a chance
to recognize some of your discs. To take full advantage of the catalog
ability, please register for the shareware release.
The catalog file is a normal ASCII text file, which may be edited by
any word processor or editor. Default postfix for catalog files should be
#?.cat, since the ASL-filerequester will be invoked with that pattern
definition to filter otherwise named files.
Every time an unknown disc is inserted, JukeBox creates a "dummy"
catalog entry, which looks like:
<04B0A043FB0522D05A8A04FFD3AA25/240165;53:22>="<no title assigned>"
<01/00/000000;04:33>="<no title assigned>"
<02/00/020477;05:09>="<no title assigned>"
<03/00/043655;04:41>="<no title assigned>"
<04/00/064692;03:52>="<no title assigned>"
<05/00/082095;04:16>="<no title assigned>"
<06/00/101305;04:57>="<no title assigned>"
<07/00/123562;04:06>="<no title assigned>"
<08/00/142010;05:02>="<no title assigned>"
<09/00/164625;05:18>="<no title assigned>"
<10/00/188477;03:15>="<no title assigned>"
<11/00/203135;03:33>="<no title assigned>"
<12/00/219102;04:41>="<no title assigned>"
#
First line describes the disc ID and label name. Between '<' and '>',
there are 15 bytes of a media catalog number (MCN) stored, which serves to
give an unique identification for this disc. Depending on the player
device currently used, this may be a "real" media catalog number (UPC/EARN
barcode) as defined by the ANSI specifications for cdrom player devices,
read directly from the disc. If there are no commands (as for current NEC
drives) to read such a number, or the number on a given disc is invalid,
then a "faked" MCN will be composed out of the track starting times of the
disc. Separated by a slash, the total block number count follows the MCN,
after a semicolon comes the total disc time. Then, the label name follows,
encapsulated by '"'. "Escaping" is supported for two special characters so
far, '"' and '\' must be written as '\"' and '\\' respectively inside the
name definition.
For each track on the disc, there is a separate track entry in the
catalog entry. The identification is composed by the track number, index
number, starting block address and (optionally) the play time of this
track, followed by the title name string. There are two different means to
specify title string for indexes:
(1) Hierarchical indexing:
Let's say, track five (named "foo") contains four different indexed
areas, named "bar1", "bar2"... "bar4". Thus, the track entry would look
like:
<05/00/082095;04:16>="foo"
<05/01>="bar1"
<05/02>="bar2"
<05/03>="bar3"
<05/04>="bar4"
When playing track five, JukeBox will display "foo; bar1", "foo;
bar2",... "foo; bar4" as title names. Hierarchical index names are always
appended to their parent's track name this way, delimited by a semicolon.
(2) Non-hierarchical indexing:
Let's assume the same as above, but track five inherits no
"hierarchical" meaning, each of the four indexed titles are of the same
importance. So our track entry will look like:
<05/01/082095;04:16>="bar1"
<05/02>="bar2"
<05/03>="bar3"
<05/04>="bar4"
Note that "bar1" is *not* the null indexed entry, thus any following
index titles are considered to be of same importance.
General note: In fact, cdrom player devices are not able to read
indexing information from the table of contents stored on the disc. Thus,
indexing of catalogs always needs to be done by hand, otherwise no index
distinguishing can be done by the program. Indexing is an optional
feature. And, it is not possible to position the pickup on a given index
directly, since the player device doesn't know at all where they are
located inside the track. So, positionning to an index entry (e.g. by
double clicking on an index name in the listview) will always position the
pickup to the beginning of the index' parent track.
A catalog entry is terminated by a hash sign in the first column.
Anything between square brackets, but after the ';' is ignored and
considered to be a comment. Anything outside <> or "" is ignored, and is
not written back (i.e. will be lost) when the catalog file is resaved.
(3) Aliasing
Another feature for catalog entries is aliasing entries to another
disc's layout. Let's say, you have two different discs which produces
different MCN's, but actually have the same layout. An excellent example
are certain data discs of different release versions, as the hypermedia
fish CDROM. Both discs may be recognized as the same disc, by specifying a
parent entry and an alias to that entry consecutively:
The first entry to appear has to be a normal catalog entry
representing one of the discs:
<00000000000000000000B99DB399DB/235995;52:27>="The Fred Fish Collection on
CDROM"
<01>="Fish disk data track"
#
Then, an alias entry may refer to this parent entry:
<00000000000000000000C16EA416EA/268010;59:33>=<00000000000000000000B99DB39
9DB/235995;52:27>
The alias consists of two disc identifications, concatenated by the
equality operator. Note that the track's identification entry is stripped
down to contain just the track number. Why? As any given information is of
importance, the index and block numbers are intentionally omitted, so
JukeBox will only test for the track number to match when comparing to a
real disc. Otherwise, different starting block numbers could prevent the
program from recognizing the track as "Fish Data Track".
Another reason for specifying aliases is to create catalog files
which can be read both by drives supporting real MCN's and drives creating
"faked" MCN's, due to the lack of the opportunity to read "real" MCN's of
certain CD-ROM player devices.
Tooltypes
---------
There are several tooltypes for program configuration. JukeBox will
always read the tooltypes from its proper icon file. Tooltypes are also
accessible via normal shell command lines, e.g. 'jukebox
DEVICE=gvpscsi.device'. Command line arguments take precedence over
tooltypes defined in icon file.
DEVICE
Specifies the device to be used. Default is 'scsi.device'.
UNIT
Specifies the unit number to be used. Default is 3.
PUBSCREEN
For Intuition V36+, JukeBox will try to open its window on the public
screen of this given name. If open fails, it will fall back to the default
public screen (almost the workbench screen). Note that it depends on the
console handler device (see also CONSOLE) if the ARexx macro shell might
be opened on a public screen or not.
FONTNAME
JukeBox tries to use that font for rendering the texts of its
graphical user interface. Otherwise, the system default text font, as
specified by the preferences font editor for workbench 2.0 and above
(workbench 1.3 and below will allow topaz eight or nine) will be used. If
strings don't fit (will be calculated on every item), it will fall back to
topaz eight.
FONTHEIGHT
See above.
CONSOLE
Specifies the console name for the ARexx macro shell. Default is
'CON:0/0/320/100'. A '/' and the name of the ARexx port (see PORTNAME)
will be postponed, acting (hopefully!) as title name for the new window.
As well, (for Intuition V36+) '/SCREEN ' and the name of the desired
public screen (see PUBSCREEN) are appended to the stream name, which will
(hopefully, at least Amiga Shell and WShell will do fine) force the window
to be opened on the preferred public screen.
But nearly any other interactive, line-oriented console handler may
be used, for example CONSOLE=CNX: (for WShell, AUX: should do just the
same for Amiga Shell) will open a command shell via the serial port to
another terminal.
UPDATE
Specifies the time interval for updating the display in microseconds.
Default is 250000, so the display will be updated every 1/4 second. Note
that several program functions depend on this update ratio, e.g. repeating
discs after completion, recognizing disc changes and so on.
NASTY
If set to a value greater than zero, updates the display
continguously even if the application's window is not the active one.
Otherwise, the display is only updated if the window is the active one.
Defaults to one.
PORTNAME
Specifies the name to use for the public ARexx port. Defaults to
'JUKEBOX'. External programs may use this port to communicate with the
active ARexx host of JukeBox.
There is a slot numbering mechanism which will provide unique names
for each port even if JukeBox was launched several times. Starting with
"<portname>.0", every subsequent port will have the next available slot
number, "<portname>.1", "<portname>.2" and so on.
STOP
If set to a value greater than zero, forces the program to suspend
any audio playback on program startup or exit. Otherwise, the current
playing status is not affected. Defaults to zero.
REXXSHELL
If set to a value greater than zero, a ARexx macro shell will be
opened upon program startup automatically. Defaults to zero.
KEYREPEAT
If set to zero, repeated key events from the keyboard will be
discarded. Otherwise, they will be treaded as valid command keys up to the
given maximum number. Defaults to one.
MACRO_1, MACRO_2, MACRO_3, MACRO_4, MACRO_5
Define ARexx macros. Those may be inline-stringfiles as well as
filenames (default postfix #?.np) containing complete scripts. They will
be invoked by pressing the function keys F1, F2,... F5 respectively. Not
available for the freely distributable release.
STARTUP
Defines an ARexx macro (same conventions as above) which will be
executed upon program startup.
CATALOG
Defines the name of the initial catalog file to be used.
CHANGEINT
If set to a value other than zero, tries to install a TD_CHANGEINT to
recognize disc changes. If that mechanism is not supported by a particular
driver, JukeBox will bring up a requester. When using changeint's, JukeBox
will no longer "poll" the drive as long as there is no disc inserted.
Defaults to zero.
ARexx Interface
---------------
There are 26 ARexx commands supported so far, implemented by an
active ARexx host interface. The host interface may be used via the
builtin command line interpreter (invoked with the MACRO-gadget), or any
other external program using the application's public ARexx message port,
named 'JUKEBOX.n' by default (other names may be specified by the
PORTNAME-tooltype as well, see above).
Note: Commands marked '*' will not work for the freely distributable
release.
Syntax is similar to standard AmigaDOS conventions:
/A: Always required. This argument always needs to be given.
/K: Keyword required. The argument's keyword needs to be included along
with the argument itself. Keywords are not required by default.
/M: Multiple Arguments of the same type are accepted. Up to 14 Arguments
may be specified in general to any command supported by JukeBox.
/S: The argument works as a switch. Simply type the keyword in the
command line to turn the switch on.
/N: Number. The argument is numeric.
KEYWORD={...}: Describes the expected format of an argument. If there are
several, mutually exclusive options for an argument, they are seperated by
"|". E.g., EXAMPLE={BLACK|WHITE} means that "EXAMPLE" may be either
"BLACK" or "WHITE", TIME={HH:MM:SS} means that "TIME" should be specified
as two-digit hours, minutes and seconds, seperated by colons.
* ADDTIME TO={MM:SS:FF}/A
FROM={MM:SS:FF}/M
Simple time arithmetics. Adds several time descriptions of the format
MM:SS:FF (M=minutes up to 99, S=seconds up to 59, F=1/75s up to 74) to
each other and returns the result. Ambiguous values, e.g. 0:2:105, will be
corrected to 00:03:30. Note: Time descriptions need to be enclosed in ' or
" for ARexx command parsing rules to detect them correctly.
See also: SUBTIME, CMPTIME.
* CATALOG SHOW/S,
APPEND/S,
MCN/S
Manipulation for catalog entry of the current disc. SHOW shows the
template, APPEND adds it to the global media catalog, MCN returns the disc
identification given by the media catalog number stored on the cdrom, or a
"faked" number computed from several start times of the cdrom's tracks, if
there is no valid MCN or reading this number is not supported by a
particular drive/firmware.
* CHANNEL STATUS={LEFT|RIGHT|BOTH|NONE}/A
Choosing the output mode. LEFT or RIGHT play only one channel on both
outputs, BOTH plays both channels in stereo mode, NONE plays no channel at
all.
* CMPTIME DEST={MM:SS:FF}/A,
SRC={MM:SS:FF}/A
Simple time arithmetics. Returns 1 if destination time is below
source time, -1 if above, 0 if both times are equal. Times have to be
given as MM:SS:FF (M=minutes up to 99, S=seconds up to 59, F=1/75s up to
74).
See also: ADDTIME, SUBTIME.
* CURRENT TRACK/S,
INDEX/S,
BLOCK/S,
RELTIME/S,
TIME/S,
TRKTIME/S,
CDTIME/S,
STATUS/S,
CONTROL/S,
PLAYBACK/S,
LABEL/S,
TITLE/S,
BREAK/S
Returns the number of the current TRACK, INDEX, BLOCK number, time
relative to the start of the current track (RELTIME), absolute time
(TIME), whole time of the track currently playing (TRKTIME), playing time
of the whole disc (CDTIME), current playing status (STATUS) given as
"PLAY", "NODISC", "PAUSE" or "COMPLETE", contents of the control nibble
for the current track given as:
Bit equals zero equals one
-----------------------------------------------------------
0 Audio without pre-emphasis Audio with pre-emphasis
1 Digital copy prohibited Digital copy permitted
2 Audio track Data track
3 Two channel audio Four channel audio
-----------------------------------------------------------
the current playback status (PLAYBACK) given as:
0 = pause
2 = playing
3 = disc completed
the disc's label name (LABEL), the current track's name (TITLE) and the
BREAK status (issued by the escape key) of zero or one.
EJECT
Stops playing, turns motor and laser beam off and ejects the
cartridge, if supported by the particular drive. If cartridge ejection is
not supported, the disc tray is now safe to be opened manually and a cdrom
may be removed.
GETATTR VERSION={FULL|DATE|VER|REV}/K,PLAYER/S,
WINDOW={TITLE|LEFT|TOP|PUBSCREEN|GUILOCKS}/K,
PROJECT={FILENAME|PATH|FILE|CHANGES}/K,
PORTNAME/S
Returns program information. VERSION FULL/DATE/VER/REV gives
different version strings, PLAYER identifies the player module used
currently, WINDOW gives information about the window position (LEFT/TOP),
its TITLE, the underlying PUBSCREEN (if supported by the current operation
system), the nesting count of GUILOCKS. PROJECT FILENAME gives the
complete path- and filename of the current catalog, PATH only gives the
path part, FILE gives the filename part, CHANGES reports the changes made
to the catalog. PORTNAME returns the name of the public ARexx-Port.
INQUIRY
This command will send an Inquiry command to the current drive and
return 36 bytes of data.
Example: options results; inquiry; say c2x(result)
* LOCK STATUS={0|1}/N
Looks or unlocks (depending on status) the disc tray, if supported by
the current drive. With a locked tray, cartridges may only be ejected by
pressing the eject gadget within JukeBox, but not by the button on the
drive.
* LOCKGUI
Inhibits the graphical user interface. This call may be nested. See
also: UNLOCKGUI.
MOVEWINDOW LEFT/N,
TOP/N
Moves the user interface window to the absolute position given by
LEFT and TOP. They may not exceed the dimensions of the current screen,
the command will take care of this.
* NEW FORCE/S
Abandon the current catalog, FORCE prevents a prompt requester to
appear if the current catalog was altered.
* OPEN FORCE/S,
NAME/K
Open a new catalog, either by bringing up a file requester, or by the
NAME given with this command. FORCE prevents a rompt requester to appear
if the current catalog was altered.
PAUSE
Switches to pause mode. Current playing is interrupted and the pickup
will stay at the same position.
PLAY
Starts (continues) playing from the current position. If there is a
range marked by A and/or B, starts from the beginning of this range (the A
position).
REQUESTRESPONSE PROMPT/K
Brings up a requester, prompting with PROMPT string for a psotive or
negative answer. The user's choice will be reported to the caller.
* SAVE
Saves the current catalog.
* SAVEAS NAME/K
Saves the current catalog under the name given by NAME.
* SET TRACK=NUM/N/K,
BLOCK=NUM/N/K,
TIME={MM:SS:FF}/K
Moves the pickup to a given TRACK, BLOCK (frame) number or an
absolute TIME position on the disc given as MM:SS:FF (M=minutes up to 99,
S=seconds up to 59, F=1/75s up to 74).
STOP
Stops playing and moves the pickup to the first track.
* SUBTIME TO={MM:SS:FF}/A,
FROM={MM:SS:FF}/M
Simple time arithmetics. Subtracts several time descriptions of the
format MM:SS:FF (M=minutes up to 99, S=seconds up to 59, F=1/75s up to 74)
from destination (TO) and returns the result.
See also: ADDTIME, CMPTIME.
* TOC NUM/N,
STEM=NAME/K
- Without any arguments, returns the current table of contents given
as (example):
TDT 53:22:15 (53:24:15)
#01 04:33:02 (00:02:00)
#02 05:09:03 (04:35:02)
#03 04:40:37 (09:44:05)
#04 03:52:03 (14:24:42)
#05 04:16:10 (18:16:45)
#06 04:56:57 (22:32:55)
#07 04:05:73 (27:29:37)
#08 05:01:40 (31:35:35)
#09 05:18:02 (36:37:00)
#10 03:15:33 (41:55:02)
#11 03:32:67 (45:10:35)
#12 04:40:63 (48:43:27)
Values in parantheses describes starting time of particular tracks
and (TDT) ending time of disc respectively.
- Given a track number as argument, returns information about the
particular track, e.g. TOC 4 will give:
03:52:03 (14:24:42-18:16:45) $10 "If I Were (In Your Shoes)"
which describes the track duration, starting and ending time in
parantheses, the ADR and CTRL nibble and the track's name.
- STEM will put the table of contents (as given above) in an ARexx
stem of the given name, storing the number of lines in element zero of the
stem, e.g.
TOC STEM a.
DO i=0 TO a.0
SAY a.i
END
*UNLOCKGUI
Enables the user interface for normal gadget/menu processing. This
call may be nested as well. See also: LOCKGUI.
* WAIT COMPLETE/S,
TRACK=NUM/N/K,
ABSOLUTE={MM:SS:FF}/K,
FKEY NUM={6|7|8|9|10}/N/K
Waits until current disc is COMPLETE, a particular TRACK is reached,
an ABSOLUTE time expired, or a function key given by FKEY is pressed. The
script doesn't proceed as long as the particular event doesn't occur.
Note: function keys have to be pressed in the application's (or catalog's)
window, not the window of the command interpreter, which would be hard for
JukeBox to discover :-).
Warning: if a particular event doesn't occur, this command will never
return. By pressing the escape key or the close gadget of the
application's window, all hanging waits are devoted to return immediately.
WINDOWTOBACK
Switches the user interface window to the background.
WINDOWTOFRONT
Switches the user interface window to the top of any other window.
ARexx scripts
-------------
The default postfix for ARexx-Scripts is "#?.jb". You can start a
script by simply typing its name to the ARexx console, e.g. "fwd" will
search for the script "fwd.jb". You may type "inline"-scripts to the ARexx
console as well. Example:
do i=1 to 10; say 'hello, world'; end;
And you may type any command supported by JukeBox directly to the
console, e.g. "play" or "pause".
There are several ARexx scripts in the distribution archive which
serve as examples how to discover the full programming abilities of
JukeBox. People comfortable in ARexx programming will be able to do nearly
everything. Enjoy.
For the freely distributable release, most of the example scripts
don't work because the full ARexx command set is only available for the
shareware release. Please get registered!
Keyboard shortcuts
------------------
For the shareware release, the following keyboard shortcuts are
accessible. They will not work for the freely distributable release.
F1...F5 Invokes ARexx MACRO_1,...MACRO_5.
F6...F10 User definable command keys for ARexx
macro definition 'wait fkey 6' ... 'wait
fkey 10'.
ESC Suspends any waiting ARexx command.
SPACE Play/Pause
SHIFT-SPACE Stop
SHIFT-TAB Eject
+ Extended track selection.
E,e Edit
T,t Time
^ mark passage 'A<>B'
C,c Continue
X,x Invoke ARexx command interpreter
R,r Repeat (toggle)
S,s Shuffle (toggle)
L,l Lock (toggle)
< Left channel
> Right channel
I,i Titles
Arrow keys
-----------
UP Scroll up
DOWN Scroll down
LEFT Time Set <<
RIGHT Time Set >>
SHIFT-UP Page up
SHIFT-DOWN Page down
SHIFT-LEFT AMS/RMS |<<
SHIFT-RIGHT AMS/RMS >>|
Numeric keys (also NKP)
------------------------
0,1...9 Same as gadgets 10,1...9
Error messages
--------------
++ Error 0 Unspecified error
Should never show up.
++ Error 1 Target is no CD-ROM
The specified scsi-target wasn't recognized as a CD-ROM player
device.
++ Error 2 Can't create menu
The menu couldn't be created. This one might only occur if one of the
following calls to system libraries, GetVisualInfo(), GetScreenDrawInfo(),
CreateMenus(), LayoutMenus() or SetMenuStrip() fails for various reasons.
++ Error 3 Can't open timer.device
The timer.device couldn't be opened. This should never occur and is
only there for the sake of consistency.
++ Error 4 Can't create timer request
The timerequest structure needed for timer I/O couldn't be allocated,
probably due to the lack of memory.
++ Error 5 Can't create timer port
The messageport for doing timer I/O couldn't be allocated, probably
due to the lack of memory.
++ Error 6 Player module "<name string>" not found
Searching for a matching player module failed. Might occur if there
is no player module for a particular CD-ROM player device available. <name
string> represents the vendor identification, as read from the drive's
inquiry data.
++ Error 7 Can't open SCSI device unit <number>
Attempt to open the given unit number failed. Mostly caused by a
request to open nonexistant drivers/target addresses.
++ Error 8 Can't create SCSI request
The IORequest structure needed for scsi I/O couldn't be allocated,
probably due to the lack of memory.
++ Error 9 Can't create SCSI port
The messageport for doing scsi I/O couldn't be allocated, probably
due to the lack of memory.
++ Error 10 Can't open window
The window couldn't be opened. Might be due to the lack of memory, or
at least the default public screen (almost workbench) isn't big enough
(584x200 pixel minimum).
++ Error 11 Can't open font
The desired font, specified as FONTNAME=... and FONTHEIGHT=... isn't
available to be opened via OpenDiskFont().
++ Error 12 Can't open diskfont.library
Standard system LIBS: device or exec libraries list lacks
diskfont.library. Otherwise, the version found is older than 33.
++ Error 13 Can't open graphics.library
There's no graphics.library available. Should never occur and is only
there for the sake of consistency. Otherwise, the version found is older
than 33.
++ Error 14 Can't open mathtrans.library
Standard system LIBS: device or exec libraries list lacks
mathtrans.library. Otherwise, the version found is older than 33.
++ Error 15 Can't open mathffp.library
There's no mathffp.library available. Should never occur and is only
there for the sake of consistency. Otherwise, the version found is older
than 33.
++ Error 16 Can't open icon.library
Standard system LIBS: device or exec libraries list lacks
icon.library. Otherwise, the version found is older than 33.
++ Error 17 Can't open layers.library
There's no layers.library available. Should never occur and is only
there for the sake of consistency. Otherwise, the version found is older
than 33.
++ Error 18 Can't open intuition.library
There's no intuition.library available. Should never occur and is
only there for the sake of consistency. Otherwise, the version found is
older than 33.
++ Error 19 Can't open console.device
There's no console.device available. Should never occur and is only
there for the sake of consistency.
++ Error 100 Out of memory
Not enough memory available. JukeBox allocates its memory
dynamically. So, there might be no memory for a given operation, while
there is sufficiant memory for another.
++ Error 101 Not added, label already exists (line #<number>)
A disc ID number (MCN) already exists. One ID may be added only once
to the catalog by issuing the "Append" command.
++ Error 102 ASL- or ARP-library not available
There's no arp.library (AmigaOS 1.3 and below) or asl.library
(AmigaOS 2.x and above) available to bring up a file requester. The name
is prompted by a simple string-requester then.
++ Error 103 No parent entry found for link (line #<number>)
Attempt to link a disc ID to a nonexistant catalog entry failed
because there's no such catalog entry in the catalog file. (See "aliasing"
in the catalog format description above)
++ Error 104 Media change interrupts not supported
The selected device driver (#?.device) doesn't implement TD_CHANGEINT
and (gratefully!) responds with a value other than zero to the appropriate
I/O operation. Thus, changeints can't be used and shouldn't be requested
furthermore (just change CHANGEINT tooltype to zero). Warning: Some device
drivers might actually claim to understand changeints, but can't really
handle them correctly. Be aware of this, it may cause severe problems!
++ Error 40 SCSI error: HFERR_SelfUnit
++ Error 41 SCSI error: HFERR_DMA
++ Error 42 SCSI error: HFERR_Phase
++ Error 43 SCSI error: HFERR_Parity
++ Error 44 SCSI error: HFERR_SelTimeout
++ Error 45 SCSI error: HFERR_BadStatus
These are specific SCSI-error numbers returned by the device driver
upon startup. Possibly, the drive is connected/terminated the wrong way to
the host adapter or doesn't conform correctly to HD_SCSICMD. During normal
program operation, SCSI errors are displayed on the main display and the
title name field (no requesters, since they might occur heavily).
Supported drives
----------------
As of this writing, this program was developed for and tested with
NEC CDR-83, CDR-84, NEC CDR-36 and the TOSHIBA XM-3301B CD-ROM (firmware
v5.1) player devices. Other devices might be easily adapted as well. There
is an internal communication protocoll (a vendor specific player "module"
concept) provided to archive this, as well as there are means to add new
player modules externally. For example, the adaption for the TOSHIBA
player device was done in one single day! Just give me a test unit and the
appropriate scsi docs, and there's no reason why we shouldn't be able to
support it.
Localization
------------
There are currently two foreign localizations available, a french one
and a german one, both done by native speakers of the particular
languages.
Compatibility
-------------
This program was developed on an softkicked A3000 using SAS/C 6.2 and
AmigaOS 3.0 (V39). Much efforts had been taken to ensure compatibility to
any other version of AmigaOS. It was tested for 1.2 (33.180), 1.3 (34.5),
A2024 Jumpstart disk, 2.04 (37.175 ROM, workbench 2.1 and locale.library).
It should run on any amiga equipped with at least 1.2 ROM, 512K of chip
memory (when using 1.3 and below, 2.0 requires 1M of chip memory), a scsi
host adapter able to deal with HD_SCSICMD and a CD-ROM player device, of
course. ARexx version 1.15 is required to make use of the macro
capabilities provided by the built-in ARexx command interpreter. It was
tested on A1000, A2000, A3000 and A4000.
Credits
-------
My thanks have to go to my excellent beta testers for their efforts,
first of all to Ralph Babel for his invaluable support, suggestions and
many enhancement requests during development. I would also like to thank
Torsten Blum for excessive stress-testing, improving the catalog file and
ensuring compatibility to GVP host adapters before bothering Ralph with
non-working betas :-). Thanks to Pius Nippgen for borrowing his Toshiba
drive, René Beaupoil of Amiga Plus magazine, Christian Wallasch and
Andreas Witte of W&W Munich for the NEC drive and documentation, Jörgen
Klein of Toshiba Europe disc product division for the Toshiba drive's
docs. Also thanks to Armin Sparr of software brewery for contributing the
catalog strings of his CD collection. Special thanks have to go to Jean-
Michel Forgeas of software winery, who did an excellent french
localization.
--- END OF DOCUMENT ---